// 此中间件，会检查请求头中的token字段，解析出user_id，并将其添加到ctx中
module.exports = (_, app) => {
  return async function setSessionHeader(ctx, next) {
    // Dev 登录
    const token = ctx.request.header.token;
    let decode = '';
    if (token) {
      try {
        // 解码token
        decode = ctx.app.jwt.verify(token, app.config.jwt.secret);//验证token
        // const obj = (new Function('return '+ decode + ';'))()
        ctx.user_id = eval(decode).user_id;
        // 获取用户信息
      } catch (error) {
        ctx.status = 401;
        ctx.body = {
          message: error.message,
        };
        return;
      }
      //切记先解析token并存储数据后再执行回调，否则解析数据获取不到x
      await next();
    } else {
      ctx.status = 401;
      ctx.body = {
        message: '请求头中没有token',
      };
      return;
    }
  };
};
